import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;

public class Main {
    public static void maintest(String[] args) {
        String s="SBC";
        //s.toLowerCase();
        System.out.println(s.toLowerCase().equals("sbc"));
    }
    public static void main1(String[] args) {
        File file = new File("D:/test4.txt");
        String[] strings = file.list();
        for (int i = 0; i < strings.length; i++) {
            System.out.println(strings[i]);
        }
        try {
            Scanner scanner = new Scanner(file, "UTF-8");
        } catch (FileNotFoundException e) {
            throw new RuntimeException(e);
        }
    }

    public static void main(String[] args) throws IOException {
        //扫描指定目录，并找到名称中包含指定字符的所有普通文件（不包含目录），并且后续询问用户是否要删除该文件
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入你要删除的目录:");
        String rootDirPath= scanner.next();
        File  rootDir=new File(rootDirPath);//根据路径创建文件对象
        if(! rootDir.isDirectory()){//创建后还要判断是否我目录,万一输入的是文件?
            System.out.println("您输入的不是目录,退出程序");
            return;
        }
        //是目录时
        System.out.println("请输入你要查找的文件名称");
        String token=scanner.next();
        List<File> result =new ArrayList<>();//从目录下找到的指定文件夹,并把它存放起来
        search(rootDir,token,result);//搜索方法,使用递归实现
        //此时result就只存放找到的文件夹
        System.out.println("共找到了符合条件的文件"+result.size()+"个,他们分别是");
        for(File file1:result){
            System.out.println(file1.getCanonicalFile());//打印文件名称
            System.out.println("请问你是否要删除文件Y-N");
            String in=scanner.next();
            if(in.toLowerCase().equals("y")){//把大写转换为小写,但是小写不会变(因为有可能输入大写也有可能输入小写,当然if(...'y'||...'Y')也可以
                file1.delete();//删除文件
            }
        }
    }

    private static void search(File  rootDir, String token, List<File> result) {
        File[] files=rootDir.listFiles();//获取目录下的所有文件的集合
        if(files==null||files.length==0 ){//虽然传入的是目录,但是有可能目录里面没有东西,为null或者文件数量为0(递归到最后,可能目录里面没有文件
            return;
        }
        //正常目录的情况
        for (File file:files){
            if(file.isDirectory()){//如果file是目录的话,就递归,直到递归到文件
                search(file,token,result);//把当前文件(是目录)递归
            }else {
                if (file.getName().contains(token)){//是文件,且名称包含要删除的字段
                    result.add(file);//就把它视为要删除的文件,添加到result集合中
                }
            }
        }


    }
}